Data is frequently transmitted and received between processes that form part of a parallel program used in high performance computing (HPC) or the like. When data is transmitted and received between processes, data regions used for transmitting and receiving the data are reserved in a user space. A buffer region for internal use by a communication library such as a message passing interface (MPI) is also reserved. During communication between processes (hereinafter, “inter-process communication”), data is transmitted and received by indicating a start address of a reserved region and an offset from the start address.
Memory regions (transmission and reception regions) reserved in a user space for inter-process communication are managed by the operating system (OS). To manage transmission and reception buffers for inter-process communication, the OS uses management tables called “steering tables” that correspond on a one-to-one basis to the reserved memory regions, for example. A network interface driver of the OS specifies transmission and reception regions being used by the user using steering tables and steering tags (or “STags”) assigned to the steering tables.
When transmission and reception buffers are acquired in the user space, steering tables and STags are stored in a memory region inside a kernel space managed by the OS. When a buffer is released, the OS cancels the registration of the steering table and the STag, thereby making it possible to reuse the storage region that stored the steering table and the STag.
A number of technologies could conceivably be used to raise the efficiency of communication between host memories. One example is a technology that avoids the flow of redundant traffic onto a communication line and reduces the load of the microprocessor of the computer apparatus on the receiver side. Another example is a technology relating to an efficient iSCSI (Internet Small Computer System Interface) offload implementation using an RNIC (Remote, direct memory access enabled, Network Interface Controller).
See, for example, the following documents:
Japanese Laid-Open Patent Publication No. 2007-304786; and
Japanese National Publication of International Patent Application No. 2008-529109.
Conventionally, when transmission and reception buffers used for inter-process communication are released, the registrations of the steering tables and STags are canceled one at a time. However, there is a problem of an increase in overhead due to a registration canceling process for an STag occurring every time a buffer is released. When reusing a steering table and STag with a high usage frequency, overhead is also incurred by reregistration. For example, when canceling the registration of an STag, an overhead of 4 to 5 microseconds (μs) is taken for each system call and access to hardware. On the other hand, for simple inter-process communication, one-to-one communication takes around 1 μs. This means that the cost of canceling the registration of an Stag in order to communicate with another process is around four to five times the cost of the inter-process communication. This results in a fall in the overall efficiency of processing that involves inter-process communication.